package com.fau.om.service;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import org.apache.poi.ss.usermodel.Workbook;

import com.fau.om.entity.MedicalKeyValue;
import com.fau.om.entity.MedicalAdmin;
import com.fau.om.entity.MedicalCallCustomer;
import com.fau.om.entity.MedicalCallTelInfo;
import com.fau.om.entity.MedicalLogistics;
import com.fau.om.entity.MedicalOrdersPass;
import com.fau.om.entity.MedicalOrdersProduct;
import com.fau.om.entity.MedicalOrdersStorage;
import com.fau.om.util.Page;

/**
 * @desc 订单维护接口
 * @author kangyj
 * @datetime 2014年11月27日,上午10:30:12
 */
public interface IMaintainManagerService {

	/**
	 * @desc 订单取消分页查询审核已通过订单
	 * @param ordersPass 订单通过对象
	 * @param map 分页参数
	 * @return
	 * @author kangyj
	 * @datetime 2014年11月27日,上午10:31:33
	 */
	public Page findPassByPage(MedicalOrdersPass ordersPass, Map<String, Object> map);
	
	/**
	 * @desc 通过订单id查询订单产品
	 * @param oid 订单id
	 * @return
	 * @author kangyj
	 * @datetime 2014年11月26日,上午2:02:25
	 */
	public List<MedicalOrdersProduct> findProductByOid(String oid);
	
	/**
	 * @desc 根据id查询审核通过订单
	 * @param id
	 * @return MedicalOrdersStorage 订单详细信息表
	 * @author kangyj
	 * @datetime 2014年11月27日,下午1:50:51
	 */
	public MedicalOrdersStorage findOrdersStorageById(String id);
	
	/**
	 * @desc 通过id查询客户
	 * @param id 客户id
	 * @return
	 * @author kangyj
	 * @datetime 2014年11月27日,下午2:01:14
	 */
	public MedicalCallCustomer findCustomerById(String id);
	
	/**
	 * @desc 订单取消
	 * @param ordersPass
	 * @author kangyj
	 * @datetime 2014年11月27日,下午2:06:47
	 */
	public boolean cancelOrders(MedicalOrdersPass ordersPass);
	
	/**
	 * @desc 分页查询订单查找数据
	 * @param ordersStorage 订单详细表
	 * @param map 分页参数
	 * @return
	 * @author kangyj
	 * @datetime 2014年11月27日,下午3:49:32
	 */
	public Page findStorageByPage(MedicalOrdersStorage ordersStorage, Map<String, Object> map);
	
	/**
	 * @desc 订单取消-导出当前页
	 * @param ids
	 * @return Workbook
	 * @throws IOException
	 * @author dangjh
	 * @datetime 2014年12月10日 下午1:11:47
	 */
	public Workbook exportOrdersCurrent(String ids) throws Exception;
	
	/**
	 * @desc 订单取消-导出所有
	 * @param ordersPass
	 * @return Workbook
	 * @throws IOException
	 * @author dangjh
	 * @datetime 2014年12月10日 下午1:40:12
	 */
	public Workbook exportOrdersAll(MedicalOrdersPass ordersPass) throws Exception;
	
	/**
	 * @desc 订单查询-导出当前页
	 * @param ids
	 * @return Workbook
	 * @throws IOException
	 * @author dangjh
	 * @datetime 2014年12月10日 下午1:11:47
	 */
	public Workbook exportSearchOrdersCurrent(String ids) throws Exception;
	
	/**
	 * @desc 订单取消-导出所有
	 * @param ordersStorage
	 * @return Workbook
	 * @throws IOException
	 * @author dangjh
	 * @datetime 2014年12月10日 下午1:40:12
	 */
	public Workbook exportSearchOrdersAll(MedicalOrdersStorage ordersStorage) throws Exception;
	
	/**
	 * @desc 模糊查询核单人员
	 * @param uid核单人员Id
	 * @return List<MedicalAdmin>
	 * @author liy
	 * @datetime 2014年12月24日,下午5:54:49
	 */
	public List<MedicalAdmin> findCheckuserByName(String key);
	
	/**
	 * @desc 查询当前企业的物流公司集合
	 * @param admin
	 * @return
	 * @author kangyj
	 * @datetime 2014年12月31日,下午2:18:11
	 */
	public List<MedicalLogistics> findLogisticsList(MedicalAdmin admin);
	
	/**
	 * @desc 根据客户id查询客户号码
	 * @param cId
	 * @return
	 * @author kangyj
	 * @datetime 2014年12月31日,下午3:28:54
	 */
	public List<MedicalCallTelInfo> findTelInfoList(String cId);
	
	/**
	 * @desc 查询系统中心
	 * @param typeName
	 * @return
	 * @author zhaoey
	 * @datetime 2015年4月11日,下午1:56:07
	 */
	public List<MedicalKeyValue> findSystemList(String typeName);
	
	/**
	 * @desc 查询订单状态
	 * @param systemType
	 * @return
	 * @author zhaoey
	 * @datetime 2015年4月11日,下午1:56:07
	 */
	public List<MedicalKeyValue> findOrderStatusList(String systemType);
	
	/**
	 * @desc 分页查询我的订单
	 * @param ordersStorage
	 * @param map
	 * @return
	 * @author zhaoey
	 * @datetime 2014年11月27日,下午3:46:10
	 */
	public Page findMyOrdersByPage(MedicalOrdersStorage ordersStorage, Map<String, Object> map);
}
